interface Source {
    new(): SourceInstance
    check(): Boolean
}
interface SourceInstance {
    hello(): void
}
const pool: Source[] = []

function register(source: Source): Source {
    pool.push(source)
    return source
}
register(class implements SourceInstance {
    static check() {
        return true
    }
    public hello = () => {
        console.log('hello')
    }
})
console.log(pool)